🔎SQL Server 無法連線?完整解決「Connection timed out」教學
SQL Server 無法連線?完整解決「Connection timed out」教學
在使用 TIBCO、Spotfire 或其他工具連接 SQL Server 時,很多人會遇到以下錯誤:
Could not establish contact with the database: [tibcosoftwareinc][SQLServer JDBC Driver] Error establishing socket to host and port: 220.133.47.3:1433. Reason: Connection timed out: connect
這段訊息其實代表 資料庫連線逾時,意思是:電腦試著打開一個「通道」連到 SQL Server,但等不到回應,就像打電話卻沒人接聽。下面我會用「軟體工程師」的角度,帶你一步步找出問題。
為什麼會出現 Connection timed out?
最常見的原因有:
- SQL Server 沒有啟用 TCP/IP 連線
- 資料庫沒有在 1433 埠上監聽
- 防火牆阻擋了 SQL 連線
- 網路路由或 ISP 攔截封包
- 資料庫在內網,外部沒有設定 Port Forward
- 使用命名實例但連線字串錯誤
如何逐步檢查?
1. 測試本機是否能連上伺服器
在 Windows PowerShell 輸入:
Test-NetConnection 220.133.47.3 -Port 1433
- 如果顯示
TcpTestSucceeded : True
→ 網路可達,問題可能在資料庫設定。 - 如果顯示
False
→ 網路被擋或伺服器沒有開放。
2. 檢查 SQL Server 設定
- 打開 SQL Server Configuration Manager
- 確認 TCP/IP 協定有啟用
- 檢查
IPAll → TCP Port
是否為1433
- 在伺服器命令列輸入:
netstat -ano | findstr :1433
確認有顯示LISTENING
3. 防火牆與安全性設定
- Windows 防火牆 → 建立「入站規則」,允許 TCP 1433
- 雲端平台(Azure/AWS/GCP) → 開放 Security Group / NSG
4. 公網與內網環境
若 SQL Server 在公司內網,對外 IP 需要做 Port Forward,否則外部用戶無法連線。
5. 命名實例的狀況
如果使用命名實例,記得:
- 固定一個 TCP 埠號(建議 1433)
- 或啟用 SQL Browser(UDP 1434)
正確的 JDBC 連線字串範例
一般 SQL Server:
jdbc:tibcosoftwareinc:sqlserver://220.133.47.3:1433; databaseName=YourDB;user=YourUser;password=YourPwd
Azure SQL:
jdbc:tibcosoftwareinc:sqlserver://yourserver.database.windows.net:1433; databaseName=YourDB;encrypt=true;trustServerCertificate=false; user=YourUser;password=YourPwd
常見問題與解決方案對照表
問題情境 | 解決方法 |
---|---|
測試結果顯示連不通 | 確認防火牆 / ISP 是否封鎖 |
netstat 沒有 LISTENING | SQL Server 沒開啟 TCP/IP |
只能內網連,外網不行 | 檢查 NAT / Port Forward |
使用命名實例卻 Timeout | 設定固定 TCP 埠或啟用 SQL Browser |
Azure SQL | 開放 Client IP,並啟用加密連線 |
結論
遇到「Connection timed out」錯誤時,記住:
它代表伺服器沒回應,不是帳號密碼錯誤。
只要依照「網路 → SQL 設定 → 防火牆 → 連線字串」的順序檢查,就能一步步排除問題。
留言
張貼留言